package com.generator.demo.common.pageHelp;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;

import java.util.List;

/**
 * @author hjy
 * @Date 2021/8/19 16:01
 * @Created by hjy
 * @Description 分页公共类
 */
@Data
public class PageVo<T> {

    //当前页
    private long pageNo;
    //页面大小
    private long pageSize;
    //总记录数
    private long size;
    //总页数
    private long pages;
    //数据列表
    private List<T> results;

    /**
     * 根据Mybatis-plus 的IPage入参，转换为PageVO公共实体
     * @param iPage
     * @param <T>
     * @return
     */
    public static <T> PageVo<T> withIPage(IPage<T> iPage) {
        PageVo<T> pageVo = new PageVo<T>();
        pageVo.setResults(iPage.getRecords());
        pageVo.setPageSize(iPage.getSize());
        pageVo.setPages(iPage.getTotal());
        pageVo.setPageNo(iPage.getCurrent());
        return pageVo;
    }


    /**
     * 转换PageVo
     * @param page 源分页对象
     * @param list 目标数据对象列表
     * @param <T> 源分页数据对象
     * @param <M> 目标分页数据对象
     * @return
     */
    public static <T, M> PageVo<T> transform (PageVo<M> page, List<T> list) {
        PageVo<T> pageVo=new PageVo<>();
        pageVo.setResults(list);
        pageVo.setPageSize(page.getPageSize());
        pageVo.setPages(page.getPages());
        pageVo.setPageNo(page.getPageNo());
        return pageVo;
    }

}
